Если юнит под баффом "чума" - добавить в отряд Чума
Иначе - удалить из отряда Чума
Триггер
С. Таймер Чума
Отряд выбрать юнитов Чума
Если юнит умер
Д. создать юнита в позиции выбранного юнита.
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
Можно от даммика развеяние нежити за 0.01 сек.
Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
так как там нет геометрии (а только источники частиц), то так просто в один клик не рассчитываются границы
надо вручную создавать объект "форма" с нужным радиусом и координатами, в редакторе узлов model editor'а
Стандартный ИИ никак, только если вы замените канал какими-то другим скиллом, который юзает ИИ в схожей ситуации ( если нужно чтобы ии юзал спелл в толпе то подойдет вызов волка или стомп в качестве пустышки). Ну или совсем радикальный вариант, писать свой ИИ.
Nikolay36, очень просто GetUnitTypeId( GetSpellAbilityUnit() )
Как бы это что то ненормальное, спрашивать про элементарные вещи которые описаны в статьях по jass в 101 месте, да и вовсе есть список jass функций из common.j...
Анимация - change unit flying height - указываешь высоту в точках и скорость, с которой юнит из текущей высоты сделает новую, точек в секунду.
Например изменить высоту юнита с высотой 0 до 300 на скорости 900 - плавно установит высоту юнита до 300 за 0.33 секунды (300/900 = 0.33)
Чтобы нелетающий юнит мог плавно менять высоту не забудь добавить ему способность "Превратиться в ворона", после добавления можешь сразу удалить, юнит сможет менять высоту.
Diazon, а чем сам манабёрн не подходит? Дай еще своим монстрам класс вызванные, будет им+ 20 чистого дмг и спецэффект манабёрна (цвет тока будет не розовый, а желтоватый у спецэффекта )
Манаберн наносит доп урона суммонам, но является орбом (не сочетается с другими орбами ) , хотя тесты и показали что манабёрн ближе по механике к критам чем к орбам и башам...
Мб это негейшин (амулет защиты) из него мона делать пассивку с кулдауном, для активации кастануть даммиком какойнить скилл в юнита с негейшином, будет кд.
Потом как кд пройдет негейшин удалить и добавить пассивку, ну и так далее.
Это лечится не юзаньем сферы замедления для подобных пассивок.
Лич долго кочевряжился с этой бедой, сфера замдления перебивает тучу орбов + не стакается с критами\башами.
Делайте триггерный орб (хотя-бы только для тех у кого есть активные автокаст орбы)
Очередной вопрос, где не приложен файл. Тебе какой ответ нужен? Что надо статьи читать и больше в w3me и mdlvis практиковаться, либо конкретное решение проблемы с твоим портретом демон хантера?
avuremybe, с буфером игры (кэш) можно работать так же как с хэш таблицей FrigatPlay, в буфер игры можно сохранять не только юнитов но и предметы
просто перебираем циклом все предметы и сохраняем в кэш
а потом в следующей карте извлекаем их из кэша
Ошибка в коде, jass работает везде. pro100master, пишет бред, ибо незнает что все карты для warcraft 3 имеют сценарий на Jass, т.к все ваши триггеры в итоге преобразуются в jass и хранятся в war3map.j, тоже самое и с АИ, которое для кампаний изначально написано на jass и прекрасно работает.
Смотрите где у вас ошибки, cjass\vjass интерпретаторы могут не верно работать с картами кампаний, пробуйте написать код на чистом jass без надстроек.
Нормально экспортирую неодексом из восьмого и одиннадцатого макса. Экспортирует статичную модель? Перед экспортом нужно ведь выделить не только саму модельку, но ещё и кости.
Cinos, но я же знаю что он столько весить на одних вершинах не должен. Maniac_91, если проблема не решится я его еще больше ужму.
Короче я тот кирпич все таки был слишком кривым да и очень странным.
Вот простенький прямоугольник с закругленными краями может сойти за кирпич и весом всего то 4 кб.
Fa1korn, тебе нужно удалять не плюсик, а героя. Т.е. создал плюсик, дропнул героя, создал героя.Ну или сначала дропнул героя, а потом создал плюсик. Главное, чтобы герой был создан после плюсика.Только так можно героя поставить выше плюсика. А если не хочешь париться - убивай плюсик и воскрешай когда надо.
С твоей подсказкой до меня дошло, изначально в моей карте герой принадлежал нейтралам, а потом меняет владельца на игрока красного. Получается по счету у игрока нейтральный-пассивный он может быть 5, может быть 27, в зависимости от числа героев, но точно не первый. И после смены владельца его номер таким и и остается. А плюсик я создаю для красного игрока, т.е. он становится первым, т.к. место №1 свободно. Решается это элементарно - плюс создается сначала для нейтрально-пассивного, а затем меняется владелец. Итого плюс у нас под номером 2 ) Melissa:
Возможно нужна небольшая задержка , что я и посоветовал выше.
Нет, с этим всё в порядке, это такая специфика в моей мапе, я не учёл, что изначально все герои нейтральные, а потом меняют владельца...
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...
Пик еври юнит ин 1100 ов позишн ов юнит
утекает группа + точка
Вместо тысячи слов - изучай наработку.
поставил кастомскрипты для удаления группы и группы игроков (destroygroup и destroyforce), но так после первого срабатывания триггера, дальше уже ничего не работает
По завершении строительства фермы увеличивай число получаемого игроком золота (переменная из масива), а при смерти - уменьшай. (соответственно, наоборот, для пехотинцев)
А вообще - фича бесполезная в рамках стандартного мили-режима варкрафта. Слишком профитно уходить в экономику.
Всем спасибо, проблему решил за счет проверки на цвет/номер игрока как индекс в массиве переменных. Все работает как запланировано.
Вопрос вдогонку: как можно задавать сам индекс переменной-массива?)
З.Ы. Массивы конечно зло, но другого способа хранить инфо по одному спеллу, не используя множество переменных - пока не умею.
Pingvinromeo, проблема в том что ты фигню творишь
если спел применён в точку то точка есть
перемещение это 1 действие
за это время точка не исчезнет
короче пруфы того что не работает
если классов очень много сделай как я . пишешь название предметов так
+1d_Железный молот - что же всё это означает
проверяешь имя предмета и substring ловишь первые 3 значения
+-озночает что предмет классовый
1-уменя означал уровень предмета для тебя можешь удалить
d-означает какой класс может его поднять
ну или красевей название типо +ABS Железный меч ну тему ты уловил думаю
Ну как бы там все одно да потому, код тот же что я описал выше, вот только проверять все надо в МУИ это раз, два время затраченное на синхронизацию может быть пипец каким большим...
function Trig_SyncStr_Actions takes nothing returns nothing
local string splayer = null
local player pl = Player(0)
if GetLocalPlayer() == pl then
call StoreString( udg_Data, "A", "B", "твоя строка!" )
endif
call TriggerSyncReady()
if GetLocalPlayer) == pl then
call SyncStoredString( udg_Data, "A", "B" )
endif
call TriggerSleepAction( 2.00 )
call TriggerSyncReady()
set splayer = GetStoredString( udg_Data, "A", "B" ) // выгрузи строку из кеша в локалку и делай с ней что хочешь
endfunction
//===========================================================================
function InitTrig_SyncStr takes nothing returns nothing
set gg_trg_SyncStr = CreateTrigger( )
call TriggerAddAction( gg_trg_SyncStr, function Trig_SyncStr_Actions )
endfunction
Триггер запускаем ExecuteTrigger а "Твоя строка" заменяется на глобальную переменную.
глобальный массив не нужен. сохраняй группу в хэш-таблицу на хэндл героя, потом загружай ее когда надо. у каждого героя будет своя группа
вот пример, молот бурь съедает юнита а удар грома ставит всех юнитов обратно
Proshel_Doty, иди учи тер вер
если тебя не устраивает то как работает здравый смысл то убей себя
если тебе повезёт то ты переродишься в мире который тебя устраивает
если хочешь чтобы срабатывала каждые 5 раз то это не случайность а тупо счётчик
gabriel_fisher, скорее всего, тебе нужны анимационные теги
теги бывают разные: alternate, gold, lumber, defend, flesh и др
например, у рабочего есть анимации attack, walk, death и если ему добавить тег lumber, тогда вместо этих анимаций будут проигрываться attack lumber, walk lumber и death lumber соответственно.
Suite, вот только придётся каждый раз вручную юзать этот спелл SсRealm, ты вопрос прочти прежде чем писать всякий бред
нормальным способом момент добычи отловить нельзя
недавно кидали костыль позволяющий отловить удар по дереву но он тут не особо поможет
ибо анимации будут перебивать друг друга
в общем как и сказал Suite меняй это в самой модели
странно, но в любом случае, я снова дал не ту, эта именно обновляет скин - мороз, оживление, вот это всё пересчитывает. Вот функция смены модели:
function ChangeUnitModelTo takes unit u, string modelpath returns nothing
local integer a
local integer s
set LastConvertedHandle=ConvertHandle(u)
if LastConvertedHandle>0 then
set a=RMem(LastConvertedHandle)+0x88
if a>0 then
set a=RMem(a)
if a>0 then
set s=GetStringAddress(modelpath)
call CallThisCallWith3Args(a,LastConvertedHandle,s,1)
endif
endif
endif
endfunction
» WarCraft 3 / Не отображаются эффекты на модели.
» WarCraft 3 / Из за чего может лагать?
» WarCraft 3 / Не выбирается модель в игре
» WarCraft 3 / Id Способности
» WarCraft 3 / Высота юнита
» WarCraft 3 / Пассивка при атаке
» WarCraft 3 / Источник частиц
» WarCraft 3 / Кампания
» WarCraft 3 / Помогите найти наработку
» WarCraft 3 / Warcraft
» WarCraft 3 / Модель
» WarCraft 3 / Иконка героя
» WarCraft 3 / Пиратки и лицензия
» WarCraft 3 / Высота юнита GetUnitZ
» WarCraft 3 / Триггеры
» WarCraft 3 / Общая система золота
» WarCraft 3 / Триггерные заклинания
» WarCraft 3 / Требуется помощь!
» WarCraft 3 / Предметы для классов
» WarCraft 3 / Сохранения в мультиплеере
» WarCraft 3 / Больше одного героя (одного типа).
» WarCraft 3 / Анимация юнита